//---------------------------------------------------------------------------------------------------------------------------------------------------------//
//---------------------------------------------------------------------------------------------------------------------------------------------------------//
#ifndef _AmylogenicData_h__
#define	_AmylogenicData_h__
//---------------------------------------------------------------------------------------------------------------------------------------------------------//
//---------------------------------------------------------------------------------------------------------------------------------------------------------//
#include "libraries.h"
//---------------------------------------------------------------------------------------------------------------------------------------------------------//
//---------------------------------------------------------------------------------------------------------------------------------------------------------//
#define AMOUNTAA 21
//---------------------------------------------------------------------------------------------------------------------------------------------------------//
//---------------------------------------------------------------------------------------------------------------------------------------------------------//
typedef enum AminoAcids { A = 0, C, D, E, F, G, H, I, K, L, M, N, P, Q, R, S, T, V, W, Y, X } AminoAcids;
//---------------------------------------------------------------------------------------------------------------------------------------------------------//
//---------------------------------------------------------------------------------------------------------------------------------------------------------//
class AmylogenicData {
  
  private:

    String                 *id;
    String                 *description;

    String                 *sequence;
    String                 *sequencesShuffle;

    String                 *amylogenicRegions;

    int                     numberAmylogenicRegions;
    int                     sizeAmylogenicRegions;
    double                  percentAmylogenicRegions;

    String                 *amylogenicRegionsShuffle;

    int                     numberAmylogenicRegionsShuffle;
    int                     sizeAmylogenicRegionsShuffle;
    double                  percentAmylogenicRegionsShuffle;

    double                  frequencyAA[AMOUNTAA];

  protected:

  public:

    AmylogenicData();
    AmylogenicData(const AmylogenicData&);
    AmylogenicData(const AmylogenicData*);
    
    ~AmylogenicData();

    void                    Id(String*);
    void                    Id(char*);
    void                    Description(String*);
    void                    Description(char*);

    void                    Sequence(String*);
    void                    Sequence(char*);
    void                    SequencesShuffle(String*);

    void                    AmylogenicRegions(String*);
    void                    AmylogenicRegions(char*);

    void                    NumberAmylogenicRegions(int);
    void                    SizeAmylogenicRegions(int);
    void                    PercentAmylogenicRegions(double);

    void                    AmylogenicRegionsShuffle(String*);

    void                    NumberAmylogenicRegionsShuffle(int);
    void                    SizeAmylogenicRegionsShuffle(int);
    void                    PercentAmylogenicRegionsShuffle(double);

    String*                 Id(void);
    String*                 Description(void);

    String*                 Sequence(void);
    String*                 SequencesShuffle(void);

    String*                 AmylogenicRegions(void);

    int                     NumberAmylogenicRegions(void);
    int                     SizeAmylogenicRegions(void);
    double                  PercentAmylogenicRegions(void);

    String*                 AmylogenicRegionsShuffle(void);

    int                     NumberAmylogenicRegionsShuffle(void);
    int                     SizeAmylogenicRegionsShuffle(void);
    double                  PercentAmylogenicRegionsShuffle(void);

    double*                 FrequencyAA(void);

    bool                    ReadSequenceFromFASTA(String*);
    bool                    ReadSequenceFromFASTA(char*);

    bool                    AddSequenceShufleFromFASTA(String*);
    bool                    AddSequenceShufleFromFASTA(char*);

    bool                    ReadAmylogenicRegionsSequence(String*);
    bool                    ReadAmylogenicRegionsSequence(char*);

    bool                    AddAmylogenicRegionsSequenceShuffle(String*);
    bool                    AddAmylogenicRegionsSequenceShuffle(char*);

    double*                 GetFrequencyAASequence(void);
    double*                 GetFrequencyAASequenceShuffle(void);
    
    AmylogenicData          operator=(const AmylogenicData&);

};
//---------------------------------------------------------------------------------------------------------------------------------------------------------//
//---------------------------------------------------------------------------------------------------------------------------------------------------------//
#endif
//---------------------------------------------------------------------------------------------------------------------------------------------------------//
//---------------------------------------------------------------------------------------------------------------------------------------------------------//
